package com.jzoffer;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

/*
*小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。
* 但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。
* 没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。
* 现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
*
* 输出所有和为S的连续正数序列。序列内按照从小至大的顺序，序列间按照开始数字从小到大的顺序
* */
public class FindSumSArray {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        ArrayList<ArrayList<Integer>> continuousSequence = findContinuousSequence(n);
        System.out.println(Arrays.toString(continuousSequence.toArray()));

    }

    // 穷举
    public static ArrayList<ArrayList<Integer>> findContinuousSequence(int sum){
        ArrayList<ArrayList<Integer>> res= new ArrayList<>();
        if(sum <= 1){
            return res;
        }
        int half = (sum << 1);
        for(int i = 1;i <= half;i++){
            int temp = 0;
            ArrayList<Integer> r = new ArrayList<>();
            int j = i;
            while (j < sum){
                temp+= j;
                r.add(j);
                j++;
                if(temp == sum){
                    res.add(r);
                    break;
                }
                if(temp > sum){
                    break;
                }
            }
        }

        return res;
    }
}
